package com.biz;

import com.bean.User;
import com.dto.user.UserBaseInfoDTO;
import com.dto.user.UserTokenDTO;
import com.dto.user.UserUpdateDTO;
import com.exception.userexcetion.*;

import javax.swing.plaf.ListUI;
import java.util.List;
import java.util.Map;

/**
 * @author FatterShadystart
 * @create 2023-02-09 14:41
 */
public interface UserBizService {


    /**
     * 查找管理员id
     * @param
     * @return
     */
    Long queryAdminId( )  ;

    /**
     * 查找管理员id
     * @param
     * @return
     */
    Integer checkAdmin(Long userId)  ;


    /**
     * 查询对应用户的创建和更新人
     * @param userList
     * @return
     */
    Map<String,List<User>> queryUserCUOR(List<User> userList);


    /**
     * 分页模糊查询根据email、status、userRole查询用户
     * @param userBaseInfoDTO
     */
    Map<String,Object> queryUserByCondition(UserBaseInfoDTO userBaseInfoDTO);


    /**
     * 分页查询所有用户
     * @param userBaseInfoDTO
     */
    Map<String,Object> queryUserAllByPage(UserBaseInfoDTO userBaseInfoDTO);


    /**
     * 用户插入
     * @param userBaseInfoDTO
     */
    void insertUser(UserBaseInfoDTO userBaseInfoDTO) throws InsertException;

    /**
     * 用户更新
     * @param userUpdateDTO
     */
    void updateUser(UserUpdateDTO userUpdateDTO,Long updatorId) throws UpdateException;


    /**
     * 用户删除
     * @param userBaseInfoDTO
     */
    void deleteUser(UserBaseInfoDTO userBaseInfoDTO) throws DeleteException;


    /**
     * 用户注册
     * @param userBaseInfoDTO
     */
    void registerUser(UserBaseInfoDTO userBaseInfoDTO) throws RegisterException;

    /**
     * 用户登录
     * @param userBaseInfoDTO
     * @return
     */
    UserTokenDTO loginUser(UserBaseInfoDTO userBaseInfoDTO) throws LoginException;

    /**
     * 用户登录-管理员
     * @param userBaseInfoDTO
     * @return
     */
    UserTokenDTO loginUserAdmin(UserBaseInfoDTO userBaseInfoDTO) throws LoginException;

    /**
     * 批量删除用户
     * @param userIdList
     * @param updatorId
     */
   void  deleteBatchUser(List<Long> userIdList,Long updatorId) throws DeleteException;


}
